import { db, UserConfig } from "./database";

// 用户配置存储类（简化版）
export class UserConfigStorage {
  // 保存用户配置
  static async saveConfig(
    userId: string,
    configType: string,
    configData: any,
  ): Promise<boolean> {
    try {
      const existing = await db.userConfigs
        .where({ userId, configType })
        .first();

      if (existing) {
        // 更新现有配置
        await db.userConfigs.update(existing.id!, { configData });
      } else {
        // 创建新配置
        await db.userConfigs.add({ userId, configType, configData });
      }

      console.log(`💾 用户配置已保存: ${userId} - ${configType}`);
      return true;
    } catch (error) {
      console.error("保存用户配置失败:", error);
      return false;
    }
  }

  // 获取用户配置
  static async getConfig(
    userId: string,
    configType: string,
  ): Promise<any | null> {
    try {
      const config = await db.userConfigs.where({ userId, configType }).first();

      return config?.configData || null;
    } catch (error) {
      console.error("获取用户配置失败:", error);
      return null;
    }
  }

  // 获取用户所有配置
  static async getAllConfigs(userId: string): Promise<UserConfig[]> {
    try {
      return await db.userConfigs.where("userId").equals(userId).toArray();
    } catch (error) {
      console.error("获取用户所有配置失败:", error);
      return [];
    }
  }

  // 删除用户配置
  static async deleteConfig(
    userId: string,
    configType: string,
  ): Promise<boolean> {
    try {
      const deleted = await db.userConfigs
        .where({ userId, configType })
        .delete();

      console.log(`🗑️ 用户配置已删除: ${userId} - ${configType}`);
      return deleted > 0;
    } catch (error) {
      console.error("删除用户配置失败:", error);
      return false;
    }
  }

  // 清空用户所有配置
  static async clearAllConfigs(userId: string): Promise<boolean> {
    try {
      await db.userConfigs.where("userId").equals(userId).delete();
      console.log(`🧹 用户所有配置已清空: ${userId}`);
      return true;
    } catch (error) {
      console.error("清空用户配置失败:", error);
      return false;
    }
  }
}

// 存储工具函数
export const StorageUtils = {
  // 获取存储统计
  async getStorageStats(): Promise<{ total: number } | null> {
    try {
      const total = await db.userConfigs.count();
      return { total };
    } catch (error) {
      console.error("获取存储统计失败:", error);
      return null;
    }
  },

  // 清空所有数据
  async clearAllData(): Promise<boolean> {
    try {
      await db.userConfigs.clear();
      console.log("🗑️ 所有数据已清空");
      return true;
    } catch (error) {
      console.error("清空数据失败:", error);
      return false;
    }
  },
};
